class Solution {
public:
    /*
    dp[n]表示长度为n的绳子划分后的乘积最大值
    绳子长度大于3的dp初始化如下：（剩下3单位的绳子可以不切，保留了最大值）
    dp[1]=1;dp[2]=2;dp[3]=3;
    递推公式
    dp[n]=dp[i][n-i];
    */
    int cutRope(int number) {
        //长度为1的绳子直接返回
        //对于长度为2，3的绳子必须切一刀的话返回1，2
        if(number==1)
            return 1;
        if(number==2)
            return 1;
        if(number==3)
            return 2;
       int  dp[number];
        int res=0;
        //对与长度>3的绳子
        dp[1]=1;
        dp[2]=2;
        dp[3]=3;
        for(int i=4;i<=number;i++)
        {
            for(int j=1;j<=i/2;j++) //j表示从哪个位置开始剪
            {
                res=max(res, dp[j]*dp[i-j]);
            }
             dp[i]=res;
        }
       
        return dp[number];
    }
};